home *** CD-ROM | disk | FTP | other *** search
- Relay-Version: version B 2.10.2 9/18/84; site uwmcsd1.UUCP
- Posting-Version: version B 2.10.2 9/5/84; site ulowell.UUCP
- Path: uwmcsd1!uwmacc!uwvax!harvard!bbnccv!bbncca!wanginst!ulowell!page
- From: page@ulowell.UUCP (Bob Page)
- Newsgroups: net.micro.amiga
- Subject: Guru Meditation Numbers Explained
- Message-ID: <255@ulowell.UUCP>
- Date: 20 Mar 86 05:41:13 GMT
- Date-Received: 21 Mar 86 11:32:04 GMT
- Reply-To: page@ulowell.UUCP (Bob Page)
- Organization: University of Lowell
- Lines: 253
-
-
- (I picked this up off of Quantum Link, aka the Amiga Information Network.)
- (I cannot vouch for its accuracy, but thought you might be interested. )
-
-
-
- "You Too Can Be An Amiga Guru!"
- by Dave Boulton
- ('New & Improved' version as of 11 Feb 86)
-
- Arrrrrrgh!, you snarl as the dreaded System Request box pops on to
- the Workbench screen:
-
- Software error - task held
- Finish ALL disk activity
- Select CANCEL to reset/debug
-
- You stare at the computerese for a moment, and then hit the CANCEL
- button. The current screen is pushed down and you find yourself
- staring at the orange and black finality of:
-
- Software Failure. Press left mouse button to continue.
- Guru Meditation #02010009.00009310
-
- Many have wondered what the cryptic digits of the Guru Meditation
- Number were all about. Perhaps the flashing orange box has some
- strange mystical hypnotic powers. On the other hand, perhaps the
- number is some sort of digitized mantra which allows the Yogis of
- Los Gatos to attain perfect enlightenment. Whatever the
- interpretation was, it was beyond the reach of the average user.
- The most that the user is ever told is 'Not enough memory' or
- maybe 'Software Failure'.
-
- In fact, the Guru Meditation Number (or simply 'alert number')
- distills a lot of information about exactly what mishap has
- befallen your Amiga. To those able to decipher it, the alert
- number tells a great deal about who did what to whom as the
- machine crashed. Not that there is much that can be done about the
- situation after the fact; the information is mainly useful to help
- the Software Gurus in debugging their programs or in diagnosing
- what caused the fatal situation. It is a kind of post-mortem
- report, explaining why the patient died.
-
- But there are times when it would be valuable to the user to know
- precisely what happened to cause a crash. Other times, you may
- just be curious as to what was going on. All of the Alerts (the
- correct name for a Guru Meditation box) are defined in the header
- file called "exec/alerts" provided to software developers. What
- follows is an attempt at translating that information into a first
- order approximation of English.
-
- Many of the error conditions that the Amiga OS detects are deeply
- intertwined with the various internal data structures and
- operating system calls. There isn't any way that I can define all
-
- of the terms used without reprinting most of the ROM Kernel Manual
- here in the newsletter. However, if you are familiar with the
- basics of how the system software works, then you can figure out a
- great deal about why a particular program has crashed.
-
-
-
- Specific error code -----+ +--- Task Address
- | |
- 02 01 0009 . 00009310
- | |
- Subsystem number -+ +--- General error code
-
- An alert number is divided into several parts. The section to the
- right of the decimal point is simply the address in RAM of the
- task that was running when the error occurred. This helps tell
- someone who is debugging a program which of the many different
- programs running in the Amiga caused the problem. In the example
- given above, the running task was at 9310 hex. In this case that
- happens to mean that the error occurred in CLI process number 1.
- If I had been debugging a complex program which uses several
- tasks, this information would be useful. As it happens, all it
- tells me here is that the problem was in my software, not in any
- of the system tasks.
-
- The left hand portion of the alert number is an encoded error
- number. There are several fields with different meanings:
-
- The first two digits tell which module of the operating system
- reported the error (this is technically known as the 'alert
- object' or a Subsystem ID). In the example above the alert object
- is 02, which tells me that the error was reported by the Graphics
- library.
-
- The first digit can be encoded in a funny way. The 'most
- significant bit' of this digit says whether or not this alert is a
- 'dead-end'; that is, does the system have a chance of recovering
- from the error or not. If the alert object had been given as 82
- instead of 02, then the alert would be a 'dead-end'.
-
- In practice, this is a pretty narrow distinction. By the time you
- have gotten to the Alert Box the system is in such dire straits
- that the only choices left are to reboot, or to enter the system
- debugger. The 'dead-end' bit could possibly cause some confusion
- if you aren't used to dealing in hexadecimal. If the first digit
- of the alert object is ever greater than 7 (hexadecimal) then
- subtract 8 from it. Thus if the first two digits were B1, then the
- alert is a dead-end error reported by the Workbench (Subsystem ID
- code 31). (B minus 8 equals 3, for those of you without the
- required 16 fingers!)
-
- The Subsystem ID codes are as follows:
-
- Exec Library 01 Console Device 11
- Graphics Library 02 GamePort Device 12
- Layers Library 03 Keyboard Device 13
- Intuition Library 04 TrackDisk Device 14
- Math Library 05 Timer Device 15
- CList Library 06 CIA Resource 20
- DOS Library 07 Disk Resource 21
- RAM Library 08 Misc Resource 22
- Icon Library 09 BootStrap 30
- Audio Device 10 Workbench 31
-
- The next two digits specify the general type of error which has
- occurred. For many specialized types of errors this field is 00,
- instead of one of the general error codes below. This field is
- often very useful, since the user can easily tell such things as
- out-of-memory conditions, and missing libraries or device drivers
- (if you have deleted files from the LIBS or DEVS directories of
- your boot disk). In the example given above the general error code
- is 01, which means the the Graphics Library was not able to find
- enough free memory to allocate for some reason.
-
- The general error codes are:
-
- Insufficient memory 01 OpenDevice error 04
- MakeLibrary error 02 OpenResource error 05
- OpenLibrary error 03 I/O error 06
-
- The last four digits of the alert number give specific information
- about exactly what error has occurred. The interpretation of the
- specific error code depends on which subsystem we are talking
- about. Each subsystem reuses the same values for the specific
- error code with different meanings. In our example the specific
- error code is 0009. Since we are talking about an error in the
- graphics library, we determine that the error is called
- 'TextTmpRas' which means that a call to the Text() routine (trying
- to draw characters on the screen) ran out of memory when it tried
- to allocate memory for a TmpRas (temporary raster work area) data
- structure.
-
- If the error had been in a different subsystem (say the Intuition
- library) then the same error code of 0009 would have had a
- completely different interpretation (for Intuition it would mean
- that the Screen Type parameter to an OpenScreen call was not a
- valid type).
-
- There is one special case in dealing with Guru Meditation Numbers.
- Everything that we have discussed so far has to do with alerts
- that are detected and generated by the Amiga ROM Kernel. There is
- another case, which is when an alert is caused by a 68000
- processor exception (or 'trap'). Whenever a CPU trap occurs (for
- instance, an illegal opcode is executed) the Exec will generally
- cause an alert. A program can intercept this trap processing, and
- insert its own 'trap handler' to perform some other function, but
- usually these traps end up causing an alert. When this happens,
- the left hand part of the guru number will be a small value. The
- subsystem ID and the general error code will both be zero. The
- specific error code will be the 'trap number' of the trap that
- occurred. The trap numbers are part of the 68000 chip, and are not
- assigned by the ROM kernel like other error codes are.
-
- The following is a list of all the possible CPU traps. A few of
- these will never show up as an alert because they are always
- handled by the ROM Kernel. I list all of them here for
- completeness (and just in case I'm wrong, and they ever _do_ show
- up).
-
- Bus Error 02 Priviledge Violation 08
- Address Error 03 Instruction Trace 09
- Illegal Instruction 04 Line A Emulation 0A
- Divide by Zero 05 Line F Emulation 0B
-
- CHK instruction 06 TRAP 0 ... 15 20 ... 2F
- TRAPV (Overflow) 07
-
- The following is a list of the specific error codes and a short
- comment about their meaning. The descriptions are a slightly
- edited version of the exec/alerts file, so they are very cryptic.
-
- Exec Library
- ExcptVect 81000001 CPU trap vector checksum
- BaseChkSum 81000002 ExecBase checksum error
- LibChkSum 81000003 library checksum failure
- LibMem 81000004 no memory to make library
- MemCorrupt 81000005 corrupted free memory list
- IntrMem 81000006 no memory for interrupt servers
-
- Graphics Library
- CopDisplay 82010001 copper display list, no memory
- CopInstr 82010002 copper instruction list, no mem.
- CopListOver 82000003 copper list too long
- CopIListOver 82000004 copper intermediate list too long
- CopListHead 82010005 copper list head, no memory
- LongFrame 82010006 long frame, no memory
- ShortFrame 82010007 short frame, no memory
- FloodFill 82010008 flood fill, no memory
- TextTmpRas 02010009 text, no memory for TmpRas
- BltBitMap 8201000A BltBitMap, no memory
-
- Intuition Library
- GadgetType 84000001 unknown gadet type
- CreatePort 84010002 create port, no memory
- ItemAlloc 84010003 item plane alloc, no memory
- SubAlloc 84010004 sub alloc, no memory
- PlaneAlloc 84010005 plane alloc, no memory
- ItemBoxTop 84000006 item box top < RelZero
- OpenScreen 84010007 open screen, no memory
- OpenScrnRast 84010008 OpenScreen's AllocRast, no mem.
- SysScrnType 84000009 open sys screen, unknown type
- AddSWGadget 8401000A add SW gadgets, no memory
- OpenWindow 8401000B open window, no memory
- BadState 8400000C Bad State Return entering Int.
- BadMessage 8400000D Bad Message received by IDCMP
- WeirdEcho 8400000E Weird echo causing problem
- NoConsole 8400000F couldn't open the Console Device
-
- DOS Library
-
- StartMem 07010001 no memory at startup
- EndTask 07000002 EndTask didn't
- QPktFail 07000003 Qpkt failure
- AsyncPkt 07000004 Unexpected packet received
- FreeVec 07000005 Freevec failed
- DiskBlkSeq 07000006 Disk block sequence error
- BitMap 07000007 Bitmap corrupt
- KeyFree 07000008 Key already free
- BadChkSum 07000009 Invalid checksum
- DiskError 0700000A Disk Error
- KeyRange 0700000B Key out of range
- BadOverlay 0700000C Bad overlay
-
- TrackDisk Device
- TDCalibSeek 14000001 calibrate: seek error
- TDDelay 14000002 delay: error on timer wait
-
- Timer Device
- TMBadReq 15000001 bad request
-
- Disk Resource
- DRHasDisk 21000001 get unit: already has disk
- DRIntNoAct 21000002 interrupt: no active unit
-
- BootStrap
- BootError 30000001 boot code returned an error
-
- *** End of File ***
-